package com.twinkle.abmsspringboot.mapper;

import com.twinkle.abmsspringboot.entity.Contacts;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * ABMS - SpringBoot
 * <p>mapper 联系人信息</p>
 * <p>mapper -> interface :ContactsMapper -> implement :contacts-mapper.xml</p>
 * <p>
 * 更新了形参变量名
 *
 * @author Twinkle
 * @since 2 Aug. 2021
 * @since 4 Aug. 2021
 */
@Mapper
public interface ContactsMapper {
    /**
     * 按姓名查询联系人
     *
     * @param userId          当前用户ID
     * @param paraContactName 待查询的联系人名称
     * @return List<Contacts> 联系人列表
     */
    List<Contacts> selectContactsLike(@Param("userId") Integer userId, @Param("paraContactName") String paraContactName);

    /**
     * 返回当前用户存储的所有联系人
     *
     * @param userId 当前用户ID
     * @return List<Contacts> 联系人列表
     */
    List<Contacts> selectContactsAll(@Param("userId") Integer userId);

    /**
     * 查询一个联系人
     *
     * @return 执行结果
     */
//    @Deprecated
    int selectContactsOne();

    /**
     * 新增联系人信息
     * <p>
     * 执行结果值大于 0，执行成功；反之，执行失败
     *
     * @param contacts 联系人信息
     * @return 执行结果
     */
    int insertContacts(@Param("contacts") Contacts contacts);

    /**
     * 删除联系人信息
     * <p>
     * 执行结果值大于 0，执行成功；反之，执行失败
     *
     * @param paraContactsId 待删除联系人 ID
     * @return 执行结果
     */
    int deleteContacts(@Param("paraContactsId") Integer paraContactsId);

    /**
     * 更新联系人信息
     * <p>
     * 执行结果值大于 0，执行成功；反之，执行失败
     *
     * @param contacts 待更新的联系人信息
     * @return 执行结果
     */
    int updateContacts(@Param("contacts") Contacts contacts);
}
